package com.codedef.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateUtil {

    public static String getDateStr(Date data) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
        return f.format(data);
    }

    public static String getDateMinute(Date data) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm");
        return f.format(data);
    }

    public static String getDatetimeStr(Date data) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return f.format(data);
    }

    public static Date datetimeStrToDate(String datetimeStr) {
        SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            return f.parse(datetimeStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 获取明天的日期字符串
     *
     * @return
     */
    public static String tomorrowDateStr() {
        Date date = new Date();//取时间
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        //把日期往后增加一天.整数往后推,负数往前移动
        calendar.add(calendar.DATE, 1);

        //这个时间就是日期往后推一天的结果
        date = calendar.getTime();

        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
        String tomorrowStr = formatter.format(date);
        return tomorrowStr;
    }

    /**
     * 获取明天的日期
     *
     * @return
     */
    public static Date tomorrowDate() {
        Date date = new Date();//取时间
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        //把日期往后增加一天.整数往后推,负数往前移动
        calendar.add(calendar.DATE, 1);

        //这个时间就是日期往后推一天的结果
        date = calendar.getTime();

        return date;
    }

    /**
     * 获取明天的星期数字
     *
     * @return 周一：1 周二：2 .... 周六：6 周日：7
     */
    public static int tomorrowWeekNum() {
        Date date = new Date();//取时间
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        //把日期往后增加一天.整数往后推,负数往前移动
        calendar.add(Calendar.DATE, 1);
        int week = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        week = (week == 0 ? 7 : week);

        return week;
    }

    /**
     * 判断时间是否在时间段内
     *
     * @param nowTime
     * @param beginTime
     * @param endTime
     * @return
     */
    public static boolean belongCalendar(Date nowTime, Date beginTime,
                                         Date endTime) {
        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);

        Calendar begin = Calendar.getInstance();
        begin.setTime(beginTime);

        Calendar end = Calendar.getInstance();
        end.setTime(endTime);

        if (date.after(begin) && date.before(end)) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 计算2个时间相差的毫秒数
     * @param date1 第一个时间
     * @param date2 第二个时间
     * @return 相差的毫秒数
     */
    public static long subtractTwoDate(Date date1, Date date2) {
        return Math.abs(date2.getTime() - date1.getTime());
    }


}
